// #include <stdio.h>
// int main(void)
// {
//     char c;
//     int i,j,num;
//     printf("请输入一个大写字母：");
//     scanf("%c",&c);
//     char ch='A';
//     //确定行数num   "A"+1="B"
//     num = c - 'A';
//     for(i=1;i<=num;i++)
//     {
//         for(j=0;j<num-i;j++)
//         {
//             printf(" ");
//         }
//         for(ch='A';j<num;j++)
//         {
//             printf("%c",ch++);
//         }
//         for(j=1,ch-=2;j<i;j++,ch--)
//         {
//             printf("%c",ch);
//         }
//         printf("\n");
//     }
//     return 0;
// }

// #include <stdio.h>
// int main(void)
// {
//     char ch='*';
//     printf("请输入一个英文大写字母：");
//     ch=getchar();
//     int i,j;
//     for(i=0;i<ch-'A';i++)
//     {
//         //空格
//         for(j=0;j<ch-'A'-i;j++)
//         {
//             putchar(' ');
//         }
//         //升序
//         for(j=0;j<=i;j++)
//         {
//             putchar('A'+j);
//         }
//         //降序
//         for(j=i-1;j>=0;j--)
//         {
//             putchar('A'+j);
//         }
//         //换行
//         printf("\n");
//     }
//     return 0;
// }

// #include <stdio.h>
// int main(void)
// {
//     //字符串的反序
//     char str[100]={'0'};
//     int len=0;
//     int i,j;
//     printf("请输入一串字符串：\n");
//     fgets(str,sizeof(str),stdin);//代替了gets函数 fgets函数将回车读入
//     //找到字符串的末尾---求长度
//     while(str[len])//===>str[len]!=0  ===>str[len]!='\0' 因为'\0'的ASCII值是0
//     {
//         len++;
//     }
//     len--;//换行
//     printf("len=%d\n",len);//只是当前有效字符的长度
//     len--;//'\0'的下标
//     //反序存放
//     for(i=0,j=len;i<j;i++,j--)
//     {
//         char temp=str[i];
//         str[i]=str[j];
//         str[j]=temp;
//     }
//     puts(str);//输出字符串函数
//     return 0;
// }

// #include <stdio.h>
// int main(void)
// {
//     double num[5][5]={{86,94,87,92,95},{68,75,82,76,57},{54,65,79,86,45},{43,54,65,57,42},{53,57,75,64,54}};
//     for(int i=0;i<5;i++)
//     {
//         for(int j=0;j<5;j++)
//         {
//             printf("%.2lf  ",num[i][j]);
//         }
//         printf("\n");
//     }
//     for(int j=0;j<5;j++)
//     {
//         double sum=0;
//         double ave;
//         for(int i=0;i<5;i++)
//         {
//             sum+=num[i][j];
//         }
//         printf("第%d门的平均成绩为:%.2lf\n",j+1,sum/5);
//     }

//     for(int i=0;i<5;i++)
//     {
//         int n;//成绩未合格的次数
//         for(int j=0;j<5;j++)
//         {
//             double grate;//成绩
//             if(grate<60)
//             {
//                 printf("第%d号第%d门未及格%d\n",i+1,j+1);
//                 n++;
//             }
//         }
//         if(n>=2)
//         {
//             double sum1=0;
//             double ave1;
//             for(int j=0;j<5;j++)
//             {
//                 sum1+=num[i][j];
//                 ave1=sum1/5;
//             }
//             printf("第%d号的总成绩为%lf\n,平均成绩为%lf\n",sum1,ave1);
//         }
//     }

//     for(int i=0;i<5;i++)
//     {
//         double sum2=0;
//         double ave2;
//         for(int j=0;j<5;j++)
//         {
//             sum2+=num[i][j];
//             ave2=sum2/5;
//         }
//         printf("第%d号的平均成绩为:%.2lf\n",i+1,ave2);
        
//     }
//     int i,ave2;
//     if(ave2>90)
//     {
//         printf("第%d号的成绩达标\n",i+1);
//     }
//     return 0;
// }



#include <stdio.h>
double score[5][5]=
{
    86,94,87,92,95,
    68,75,82,76,57,
    54,65,79,86,45,
    43,54,65,57,42,
    53,57,75,64,54
};
double subAvg[5]={0};//保存5门课程平均分
double stuAvg[5]={0};//保存5个学生平均分
//获取学生平均分  为第二问和第三问做准备
void getstuAvg(void)
{
    int i,j;//i:行(学生) j:列(课程)
    for(i=0;i<5;i++)
    {
        for(j=0;j<5;j++)
        {
            stuAvg[i]+=score[i][j];
        }
        stuAvg[i]/=5;
    }
}
void one(void)
{
    int i,j;//i:行(学生) j:列(课程)
    for(j=0;j<5;j++)
    {
        for(i=0;i<5;i++)
        {
            subAvg[j]+=score[i][j];//求和
        }
        //此时subAvg[j]就是j门课程的总分
        subAvg[j]/=5;//得到了平均分
        printf("%d门课程的平均分为%.2lf\n",j,subAvg[j]);
    }
}
void two(void)
{
    int i,j,cnt;//i:行(学生) j:列(课程) cnt:计数
    printf("2门以上不及格的学生有：\n");
    for(i=0;i<5;i++)
    {
        cnt=0;//刷新计数
        for(j=0;j<5;j++)
        {
            if(score[i][j]<60)
            {
                cnt++;//计数
            }
        }
        //内循环结束后 cnt记录的是第i个学生的不及格门数
        if(cnt>=2)
        {
            printf("序号；%d\t所有成绩为：",i);
            for(j=0;j<5;j++)
            {
                printf("%.1lf ",score[i][j]);
            }
            printf("平均分为%.2lf\n",stuAvg[i]);
        }
    }
}
void three(void)
{
    int i,j,cnt;
    for(i=0;i<5;i++)
    {
        cnt=0;
        for(j=0;j<5;j++)
        {
            if(score[i][j]>=85)
            {
                cnt++;
            }
        }
        if(cnt>=5||stuAvg[i]>=90)
        {
            printf("5门课程85分以上或者平均分在90分以上的同学有：");
            printf("%d\n",i);
        }
    }
}
int main(void)
{
    getstuAvg();
    one();
    two();
    three();
    return 0;
}